public class InvocableHandlerMethod extends HandlerMethod
HandlerMethod
that invokes the underlying method with
argument values resolved from the current HTTP request through a list of
HandlerMethodArgumentResolver
.HandlerMethod.HandlerMethodParameter
Modifier and Type | Field and Description |
---|---|
private static <any> |
EMPTY_ARGS |
private static java.lang.Object |
NO_ARG_VALUE |
private ParameterNameDiscoverer |
parameterNameDiscoverer |
private ReactiveAdapterRegistry |
reactiveAdapterRegistry |
private java.util.List<HandlerMethodArgumentResolver> |
resolvers |
logger
Constructor and Description |
---|
InvocableHandlerMethod(HandlerMethod handlerMethod) |
InvocableHandlerMethod(java.lang.Object bean,
java.lang.reflect.Method method) |
Modifier and Type | Method and Description |
---|---|
private java.lang.Object |
doInvoke(java.lang.Object[] args) |
private java.util.Optional<java.lang.Object> |
findProvidedArgument(MethodParameter parameter,
java.lang.Object... providedArgs) |
private HandlerMethodArgumentResolver |
findResolver(MethodParameter param) |
private java.lang.IllegalStateException |
getArgumentError(java.lang.String text,
MethodParameter parameter,
java.lang.Throwable ex) |
private java.lang.String |
getDetailedErrorMessage(java.lang.String text,
MethodParameter param) |
private java.lang.String |
getInvocationErrorMessage(java.lang.Object[] args) |
ParameterNameDiscoverer |
getParameterNameDiscoverer()
Return the configured parameter name discoverer.
|
java.util.List<HandlerMethodArgumentResolver> |
getResolvers()
Return the configured argument resolvers.
|
<any> |
invoke(ServerWebExchange exchange,
BindingContext bindingContext,
java.lang.Object... providedArgs)
Invoke the method for the given exchange.
|
private boolean |
isAsyncVoidReturnType(MethodParameter returnType,
ReactiveAdapter reactiveAdapter) |
private boolean |
isResponseHandled(java.lang.Object[] args,
ServerWebExchange exchange) |
private <any> |
resolveArg(HandlerMethodArgumentResolver resolver,
MethodParameter parameter,
BindingContext bindingContext,
ServerWebExchange exchange) |
private <any> |
resolveArguments(ServerWebExchange exchange,
BindingContext bindingContext,
java.lang.Object... providedArgs) |
void |
setArgumentResolvers(java.util.List<HandlerMethodArgumentResolver> resolvers)
Configure the argument resolvers to use to use for resolving method
argument values against a
ServerWebExchange . |
void |
setParameterNameDiscoverer(ParameterNameDiscoverer nameDiscoverer)
Set the ParameterNameDiscoverer for resolving parameter names when needed
(e.g.
|
void |
setReactiveAdapterRegistry(ReactiveAdapterRegistry registry)
Configure a reactive registry.
|
createWithResolvedBean, equals, getBean, getBeanType, getBridgedMethod, getMethod, getMethodAnnotation, getMethodParameters, getResolvedFromHandlerMethod, getResponseStatus, getResponseStatusReason, getReturnType, getReturnValueType, getShortLogMessage, hashCode, hasMethodAnnotation, isVoid, toString
private static final <any> EMPTY_ARGS
private static final java.lang.Object NO_ARG_VALUE
private java.util.List<HandlerMethodArgumentResolver> resolvers
private ParameterNameDiscoverer parameterNameDiscoverer
private ReactiveAdapterRegistry reactiveAdapterRegistry
public InvocableHandlerMethod(HandlerMethod handlerMethod)
public InvocableHandlerMethod(java.lang.Object bean, java.lang.reflect.Method method)
public void setArgumentResolvers(java.util.List<HandlerMethodArgumentResolver> resolvers)
ServerWebExchange
.public java.util.List<HandlerMethodArgumentResolver> getResolvers()
public void setParameterNameDiscoverer(ParameterNameDiscoverer nameDiscoverer)
Default is a DefaultParameterNameDiscoverer
.
public ParameterNameDiscoverer getParameterNameDiscoverer()
public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry)
By default this is an instance of ReactiveAdapterRegistry
with
default settings.
registry
- the registry to usepublic <any> invoke(ServerWebExchange exchange, BindingContext bindingContext, java.lang.Object... providedArgs)
exchange
- the current exchangebindingContext
- the binding context to useprovidedArgs
- optional list of argument values to match by typeHandlerResult
.private <any> resolveArguments(ServerWebExchange exchange, BindingContext bindingContext, java.lang.Object... providedArgs)
private java.util.Optional<java.lang.Object> findProvidedArgument(MethodParameter parameter, java.lang.Object... providedArgs)
private HandlerMethodArgumentResolver findResolver(MethodParameter param)
private <any> resolveArg(HandlerMethodArgumentResolver resolver, MethodParameter parameter, BindingContext bindingContext, ServerWebExchange exchange)
private java.lang.IllegalStateException getArgumentError(java.lang.String text, MethodParameter parameter, @Nullable java.lang.Throwable ex)
private java.lang.String getDetailedErrorMessage(java.lang.String text, MethodParameter param)
@Nullable private java.lang.Object doInvoke(java.lang.Object[] args) throws java.lang.Exception
java.lang.Exception
private java.lang.String getInvocationErrorMessage(java.lang.Object[] args)
private boolean isAsyncVoidReturnType(MethodParameter returnType, @Nullable ReactiveAdapter reactiveAdapter)
private boolean isResponseHandled(java.lang.Object[] args, ServerWebExchange exchange)